/*
 * @Author        Engels Hua/华文涛
 * @Description   必须用jQuery选中一个select元素，然后引用select方法进行用"init"初始化,如$("#select-id").select("init",options);
 * 
 * @Param         options                    options包括属性有url，requestParameter，textField，valueField
 * @Param         options：url                对应的ajax请求数据源，ajax请求回应的数据作为select元素的的值。
 * @Param         options：requestParameter   对应的ajax请求附加参数，后台获得该参数后，根据该参数返回相应的数据。该值默认为空。
 * @Param         options：textField          获得数据后，用获得后的对象的某个字段field名字赋给此属性，则该对象的field对应的值会出现在下拉框中。
 * @Param         options：valueField         获得数据后，用获得后的对象的某个字段field名字赋给此属性，则该对象的field对应的值会<option></option>元素的value值。
 * @Example       样例:$("#id").select("init",{
										valueField: 'itemId',  
        								textField: 'itemName',  
        								url: contextPath+'/sysDictionary/getAllList.action',  
					  				});
 * 
 * @Description   获得选中的值得用options中的"getSelectedValue"方法，
 * @Description   如var selectedValue = $("#select-id").select("getSelectedValue");selectedValue即为选中的值
 * 
 *                声明：如果此下拉框插件出现bug，或者功能不满足开发需求，请联系我修改
 */

(function($) {
	$.fn.select = function(method,options) {     
		var self = this;
		/*
		var defaultValue = {
			url               :options.url!=null&&options.url!="undefined"?options.url:null,
			requestParameter  :options.requestParameter!=null&&options.requestParameter!="undefined"?options.requestParameter:null,
			textField         :options.textField!=null&&options.textField!="undefined"?options.textField:null,
			valueField        :options.valueField!=null&&options.valueField!="undefined"?options.valueField:null
		};*/
		
		if(!"SELECT".match(self[0].nodeName)){
			throw new Error("请将select方法用于select元素!");
		}
		var optionList = "<option value='null'>--请选择--</option>";
		var dataList = null;
		if(arguments[0].match("init")){
			if(options.url){
				$.ajax({
					url: options.url,
					data:options.requestParameter,
					async: function(){
						if(options.async){
							return options.async;
						}
					},
					success: function(data){
						if(data.length){
							dataList = data;
							for(var count=0;count<data.length;count++){
								optionList += "<option value='"+data[count][options.valueField]+"'>"+
								data[count][options.textField]+"</option>";
							}
							self.html(optionList);
						}
					}
				});
			}else{
				throw new Error("the url is null");
			}
		}else if(arguments[0].match("getSelectedValue")){
			return self.val();
		}else if(arguments[0].match("getSelectedObject")){
			/*
			var obj = self.val();
			if(dataList.length){
				for(var countJ=0;countJ<dataList.length;countJ++){
					if(dataList[countJ][valueField].match == self.val()){
						return dataList[countJ];
					}
				}
			}*/
		};
	}; 
}(jQuery));
